package com.vdong.supplier.http;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * http请求快递鸟
 *
 * @author liangwei
 */
@FeignClient(url = "http://api.kdniao.cc", name = "postQuerClassServiceHttpClient")
public interface PostQuerClassServiceHttpClient {

    /**
     * 一、接口描述/说明 （1）查询接口支持按照运单号查询(单个查询)。 （2）接口需要指定快递单号的快递公司编码，格式不对或则编码错误都会返失败的信息。
     * 如：EMS物流单号应选择快递公司编码（EMS）查看快递公司编码 （3）返回的物流跟踪信息按照发生的时间升序排列。 （4）接口指令1002。
     * （5）接口支持的消息接收方式为HTTP
     * POST，请求方法的编码格式(utf-8)："application/x-www-form-urlencoded;charset=utf-8"。
     *
     * @param RequestData
     * @param EBusinessID
     * @param RequestType
     * @param DataSign
     * @param DataType
     * @return
     */
    @RequestMapping(value = "/Ebusiness/EbusinessOrderHandle.aspx", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE
            + ";charset=UTF-8", produces = "text/html;charset=UTF-8")
    String EbusinessOrderHandleHttpClient(@RequestParam("RequestData") String RequestData,
                                          @RequestParam("EBusinessID") String EBusinessID, @RequestParam("RequestType") String RequestType,
                                          @RequestParam("DataSign") String DataSign, @RequestParam("DataType") String DataType);

    /**
     * 、接口描述/说明 （1）电子面单接口是快递鸟提供给独立电商、仓储管理系统、物流供应链等物流系统平台使用的下单接口。
     * （2）为客户解决在线发货需求，商户通过网络选择快递公司发送请求通知快递公司有快递要发货。 （3）
     * 客户把数据通过此接口转发到快递鸟，由快递鸟为您安排快递员上门取件的服务。
     * （4）订单编号（OrderCode）不可重复提交，重复提交系统会返回具体错误代码。 （5）接口支持的消息接收方式为HTTP
     * POST，请求方法的编码格式(utf-8)："application/x-www-form-urlencoded;charset=utf-8"。
     *
     * @param RequestData
     * @param EBusinessID
     * @param RequestType
     * @param DataSign
     * @param DataType
     * @return
     */
    @RequestMapping(value = "/api/EOrderService", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE
            + ";charset=UTF-8", produces = "text/html;charset=UTF-8")
    String EbusinessOrderClient(@RequestParam("RequestData") String RequestData,
                                @RequestParam("EBusinessID") String EBusinessID, @RequestParam("RequestType") String RequestType,
                                @RequestParam("DataSign") String DataSign, @RequestParam("DataType") String DataType);

    /**
     * 预约取件
     *
     * @param RequestData
     * @param EBusinessID
     * @param RequestType
     * @param DataSign
     * @param DataType
     * @return
     */
    @RequestMapping(value = "/api/OOrderService", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE
            + ";charset=UTF-8", produces = "text/html;charset=UTF-8")
    String EbusinessOOrderClient(@RequestParam("RequestData") String RequestData,
                                 @RequestParam("EBusinessID") String EBusinessID, @RequestParam("RequestType") String RequestType,
                                 @RequestParam("DataSign") String DataSign, @RequestParam("DataType") String DataType);

    /**
     * 取消订单
     *
     * @param RequestData
     * @param EBusinessID
     * @param RequestType
     * @param DataSign
     * @param DataType
     * @return
     */
    @RequestMapping(value = "/Ebusiness/EbusinessOrderHandle.aspx", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE
            + ";charset=UTF-8", produces = "text/html;charset=UTF-8")
    String EbusinessOrderHandleClient(@RequestParam("RequestData") String RequestData,
                                      @RequestParam("EBusinessID") String EBusinessID, @RequestParam("RequestType") String RequestType,
                                      @RequestParam("DataSign") String DataSign, @RequestParam("DataType") String DataType);

}
